(
	function ( )
	{
		try
		{
			extensions.org.icongarden.http.writeASCII ("Content-type: text/html\r\n\r\n");

			function visit (node,nodeName)
			{
				function article (s)
				{
					if (!s) return s;
					var vowels = "aeiouy";
					if (-1 === vowels.indexOf (s [0])) return "a " + s;
					return "an " + s;
				}

				var output = "<p>property '" + nodeName + "' is " + article (extensions.org.icongarden.utility.typeOf (node));

				if (node)
				{
					if (typeof node !== 'object')
					{
						output += " whose value is:<blockquote><pre>";
						output += extensions.org.icongarden.utility.entityify (node.toString ( ));
						output += "</pre></blockquote>";
					}
					else if (extensions.org.icongarden.utility.isEmpty (node))
					{
						output += " which is empty";
					}
					else
					{
						output += " which has properties<blockquote>";
						for (var child in node) output += visit (node [child], child);
						output += "</blockquote>";
					}
				}

				return output + "</p>";
			}

			extensions.org.icongarden.http.writeUTF8 (visit (this,'global'));
		}
		catch (e)
		{
			extensions.org.icongarden.http.writeUTF8 ("exception: " + e);
		}
	}
)

( );
